/**
 * 快速导出压缩包 需要安装依赖 npm install archiver -D
 * 这个库的文档地址 https://github.com/archiverjs/node-archiver
 * 可以在 package.json 中配置 script 命令"zip": "node zip.js",进行zip 压缩
 * 之后，配置 新的npm命令 npm run deploy  执行3部操作：
 * 1、npm run vendor =>2、npm run wkbuild =>3、npm run zip
    并将zip文件输出到指定路径
 */

// require modules
const fs = require("fs");
const archiver = require("archiver");
const CONFIG = require("./src/assets/raw/config.js");
// const prompts = require("@inquirer/prompts");
// const chalk = require("chalk");

async function startZip() {
    // const date = new Date();
    // const month = (date.getMonth() + 1).toString().padStart(2, "0");
    // const day = date.getDate().toString().padStart(2, "0");
    // const version = await prompts.input({
    //     message: chalk.green("请输入版本号"),
    //     default: `${month}${day}01`,
    // });

    const homedir = __dirname; //这里是当前目录路径

    // 设置输出目录 kidsplayer_D20230610
    // const zipFile = `com.ysten.wk.shaoer_${version}_online.zip`;
    // "WEB_KIDSPLAYER_V2.0_D20231115"

    const zipFile = `com.ysten.wk.aroundLife_${CONFIG.UPDATE_VERSION}_online.zip`;
    const outputPath = homedir + "/" + zipFile;
    const output = fs.createWriteStream(outputPath);
    //设置压缩格式为zip
    const archive = archiver("zip", {
        zlib: { level: 9 }, // 设置压缩级别
    });

    // 文件输出流结束
    output.on("close", function () {
        console.log(archive.pointer() + " total bytes");
        console.log(
            "archiver has been finalized and the output file descriptor has closed."
        );
        moveZip();
    });

    // 数据源是否耗尽
    output.on("end", function () {
        console.log("Data has been drained");
    });

    // 存档出错
    archive.on("error", function (err) {
        throw err;
    });
    // 通过管道方法将输出流存档到文件
    archive.pipe(output);

    // 打包dist/android/里面的所有文件和目录
    // zip文件不能直接指定到要打包文件夹下，否则进入死循环！！！
    const inputPath = homedir + "/dist/android/";
    archive.directory(inputPath, false);

    // 完成归档
    archive.finalize();

    function moveZip() {
        // 将zip文件移动到指定文件夹下
        fs.rename(outputPath, inputPath + zipFile, (err) => {
            if (err) {
                console.log("移动失败");
            } else {
                console.log("移动成功");
            }
        });
    }
}

startZip();
